using System;
using System.ServiceModel;

namespace WebService.ServiceContracts
{
    [ServiceContract(Namespace = "http://WebService.ServiceContracts/2007/12", Name = "IPokerGame", SessionMode = SessionMode.Required)]
    public interface IPokerGame
    {
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Join")]
        WebService.ServiceContracts.joinResponse Join(WebService.ServiceContracts.JoinRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = false, IsOneWay = false, AsyncPattern = false, Action = "Bet")]
        WebService.ServiceContracts.betResponse Bet(WebService.ServiceContracts.betRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = false, IsOneWay = false, AsyncPattern = false, Action = "GetTable")]
        WebService.ServiceContracts.tableResponse GetTable(WebService.ServiceContracts.tableRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = false, IsOneWay = false, AsyncPattern = false, Action = "Begin")]
        WebService.ServiceContracts.beginResponse Begin(WebService.ServiceContracts.beginRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "CreateRoom")]
        WebService.ServiceContracts.createRoomResponse CreateRoom(WebService.ServiceContracts.createRoomRequest request);
        [OperationContract(IsTerminating = true, IsInitiating = false, IsOneWay = false, AsyncPattern = false, Action = "LeaveRoom")]
        WebService.ServiceContracts.leaveRoomResponse LeaveRoom(WebService.ServiceContracts.leaveRoomRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = false, IsOneWay = false, AsyncPattern = false, Action = "AskForChanges")]
        WebService.ServiceContracts.AskForChangesResponse AskForChanges(WebService.ServiceContracts.AskForChangesRequest request);
    }
}
